package com.panasonic.web.mapper;

import com.panasonic.web.domain.cms.CmsAttachment;
import com.panasonic.web.domain.cms.CmsArticle;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 文章Mapper接口
 * 
 * @author lwf
 * @date 2021-11-12
 */
public interface CmsArticleMapper 
{
    /**
     * 查询文章
     * 
     * @param id 文章ID
     * @return 文章
     */
    public CmsArticle selectCmsArticleById(Long id);

    /**
     * 查询文章列表
     * 
     * @param cmsArticle 文章
     * @return 文章集合
     */
    public List<CmsArticle> selectCmsArticleList(CmsArticle cmsArticle);

    /**
     * 新增文章
     * 
     * @param cmsArticle 文章
     * @return 结果
     */
    public int insertCmsArticle(CmsArticle cmsArticle);

    /**
     * 修改文章
     * 
     * @param cmsArticle 文章
     * @return 结果
     */
    public int updateCmsArticle(CmsArticle cmsArticle);

    /**
     * 删除文章
     * 
     * @param id 文章ID
     * @return 结果
     */
    public int deleteCmsArticleById(Long id);

    /**
     * 批量删除文章
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteCmsArticleByIds(Long[] ids);

    /**
     * 批量删除附件
     * 
     * @param customerIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteCmsAttachmentByArticleIds(Long[] ids);
    
    /**
     * 批量新增附件
     * 
     * @param cmsAttachmentList 附件列表
     * @return 结果
     */
    public int batchCmsAttachment(List<CmsAttachment> cmsAttachmentList);

    /**
     * 批量额更新
     * @param cmsAttachmentList
     * @return
     */

    public int batchUpdateCmsAttachment(List<CmsAttachment> cmsAttachmentList);


    /**
     * 通过文章ID删除附件信息
     * 
     * @param roleId 角色ID
     * @return 结果
     */
    public int deleteCmsAttachmentByArticleId(Long id);

    int changeCategory(@Param("ids") Long[] ids, @Param("categoryId") long categoryId, @Param("updateBy") String updateBy, @Param("updateTime") Date updateTime);

    int changeTop(@Param("ids") Long[] ids, @Param("top") Integer top,@Param("updateBy") String updateBy, @Param("updateTime") Date updateTime);
}
